home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 3 / Gold Medal Software - Volume 3 (Gold Medal) (1994).iso / misc / qemtec.arj / APIBRO.TEC < prev    next >
Text File  |  1994-01-12  |  48KB  |  946 lines

  1. ID:AI DESQview API General Information
  2. Quarterdeck Technical Note #211                       Filename: APIBRO.TEC
  3. by Jim Susoy                                        CompuServe: APIBRO.ZIP
  4. Last revised:  9/14/92                                Category: API
  5.  
  6. Subject: The text of our brochure describing the DESQview Application
  7.          Program Interface, used to create DESQview-aware or
  8.          DESQview-specific programs.  A full description of the API,
  9.          including all available calls.
  10.  
  11.  
  12. In the Quarterdeck view of the world there are three kinds of DOS programs:
  13.  
  14. There's the DESQview-oblivious program, such as 1-2-3 or AutoCAD, written with 
  15. no consideration of DESQview, but still compatible with DESQview.
  16.  
  17. There's the DESQview-aware program.  It has been modified slightly so that it 
  18. runs efficiently in DESQview and concurrently with other programs.  Paradox, 
  19. DBASE III, DBASE IV, FoxPro, and WordPerfect are DESQview-aware.
  20.  
  21. Then there's the DESQview-specific program, like the DESQview Datebook. It's 
  22. written to take advantage of DESQview's power.  If you look closely, you'll 
  23. discover DESQview behind both the ICL North America and IBM/Tridata point of 
  24. sale systems, US Data's factory control systems, TRW's title insurance system, 
  25. Moody's Investor's Services' bond rating system, FNN's NewsReal and Novell's 
  26. Remote Access Server, to name only a few.
  27.  
  28. Hidden deep inside DESQview 2 is a powerful API (Application Program 
  29. Interface) that lets programs control and interact with DESQview and with 
  30. other programs running in DESQview.  For MIS and DP departments building 
  31. workstation solutions, the DESQview API provides enormous benefits, for it 
  32. brings OS/2 capabilities (and even OS/2 look and feel if desired) to DOS. 
  33. Using the DESQview API, a program can use all the DESQview menu functions 
  34. available to the user as well as the power-packed capabilities built into 
  35. DESQview:  multitasking, windowing, intertask communications, mailboxes, 
  36. shared programs, memory management, mousing, data transfer, menu-building, and 
  37. help.
  38.  
  39. So, DOS programs can now act alone or together.  Either within a window or 
  40. hidden behind one, they can do chores in silence or in chorus, all the while 
  41. utilizing the full power of DESQview, all the while bringing you treasures you 
  42. only dreamed 'til now were possible.
  43.  
  44. A program taking advantage of the DESQview API can display information in 
  45. windows and control the color, dimensions, position, and ordering of windows 
  46. on the screen.  It can disable, limit or enhance the standard DESQview user 
  47. interface, which means that you can have DESQview-like menus in your program, 
  48. or menu bars and pull-down menus, or IBM SAA-like menus.  It can let DESQview 
  49. handle all keyboard and mouse input to menus and forms yet still process 
  50. keyboard and mouse input directly when necessary.  It can schedule processing 
  51. after a certain time interval or at a certain time.  It can spawn subtasks for 
  52. performing background operations such as printing, recalculating, and 
  53. communicating.  It can communicate between the various tasks in the system.
  54.  
  55. MULTITASKING
  56.  
  57. DESQview supports true multitasking of existing DOS programs in addition to 
  58. programs written specifically for DESQview.  So a user can run multiple 
  59. programs (Lotus 1-2-3, DBASE IV and others) and DESQview-specific programs 
  60. (DESQview Datebook, Calculator, your own program) concurrently.  So a user can 
  61. switch to whichever program needs input and switch away while the program 
  62. recalculates or sorts in background.
  63.  
  64. Under DESQview, each program runs in its own "virtual machine", thinking it 
  65. has exclusive access to DOS, the keyboard, etc. DESQview calls these virtual 
  66. machines "processes".  DESQview calls the portion of a process that keeps 
  67. track of which instruction to execute next and what the register contents are 
  68. a "task" (or "thread").  Every program running under DESQview consists, 
  69. initially, of a single process running a single task.
  70.  
  71. DESQview-specific programs may create additional tasks within their own 
  72. processes and additional processes.  Additional tasks allow a portion of your 
  73. program, the part that controls the printer for example, to be run in 
  74. background.  Additional processes allow whole new programs to be loaded and 
  75. run concurrently.
  76.  
  77. PRESENTATION MANAGEMENT
  78.  
  79. Because DESQview lets you run more than one program at a time, DESQview 
  80. provides a way to view more than one program at a time on the screen. DESQview 
  81. does this by mapping each program into its own "window" and by managing the 
  82. display of multiple windows on the screen.  To DESQview, windows are 
  83. rectangular areas of displayable information.  They may be moved, resized, 
  84. colored, and reordered by either the user or by your program.  Everything that 
  85. is displayed on the screen under DESQview is displayed in a window.
  86.  
  87. Multiple windows are not only useful for displaying several programs 
  88. simultaneously, but may also be used within a single program to display menus, 
  89. help screens, error messages.  DESQview provides facilities for storing 
  90. complete descriptions of such windows, (known by DESQview as "panels"), on 
  91. disk or in your program and displaying them with a single call to the API. 
  92. These panels may be as simple as one-line error messages or as complex as data 
  93. entry forms with multiple-choice and data entry fields.
  94.  
  95. Once a panel has been displayed, your program can ask DESQview's "field
  96. manager" to process all user input to the panel including mousing and data
  97. entry editing.  The field manager returns the results to your program in a
  98. simple, field-oriented format, independent of the appearance of the panel.
  99.  
  100. The use of panels and the field manager not only simplifies the job of
  101. programming an application, but gives a consistency to the user interface
  102. that makes the learning of new applications easier.
  103.  
  104. INTERTASK COMMUNICATIONS
  105.  
  106. So that DESQview-specific programs can rapidly exchange information, DESQview
  107. provides a wide range of intertask communications facilities.  These 
  108. facilities allow several concurrently-running tasks to exchange information or 
  109. signals, to lock access to common resources, to share common code and data, 
  110. and to interrupt each other to handle critical events.  These tasks can be in 
  111. either the same or different processes.
  112.  
  113. Intertask communication is the key to building complex applications in a 
  114. multitasking environment.  Let's say, for example, you are building a point of 
  115. sale system, that handles a dozen cash registers for a department store. Using 
  116. DESQview you could break your application up into fourteen tasks:  one for 
  117. each of the cash registers, one to handle access to the pricing data-base and 
  118. one to track sales and generate management reports.  The cash register tasks 
  119. would process keystrokes from the clerk until an item price is needed, they 
  120. would then send a message to the database task requesting the price. The 
  121. database task would log the sale and return the price to the sender of the 
  122. request.  Meanwhile, the store manager could interact with the reporting task 
  123. to monitor sales, clerk performance, etc.
  124.  
  125.  
  126. DATA TRANSFER
  127.  
  128. DESQview supports two types of user-initiated data transfer. The first, called 
  129. Mark & Transfer, lets a user mark text in any window and transfer that text to 
  130. any other application.  The application receiving the data can be DESQview-
  131. oblivious, seeing the data as normal keyboard input.
  132.  
  133. More sophisticated transfers are possible between DESQview-specific 
  134. applications that support the DESQview Scissors command.  When the user marks 
  135. data in such an application, DESQview notifies the application that data has 
  136. been requested and lets the application determine exactly what data to supply. 
  137. The application may supply anything including text, formulas, or even graphics 
  138. images.  When the user instructs DESQview to Paste the data into another 
  139. application, that application is also notified so that the data can be handled 
  140. appropriately.
  141.  
  142. The applications involved in a Scissors transfer can even use DESQview's 
  143. intertask communication facilities to setup a "hot-link" between themselves so 
  144. that subsequent changes to the data are automatically reflected in both 
  145. applications.
  146.  
  147. MEMORY MANAGEMENT
  148.  
  149. Programs running under DOS are typically given all of a PC's memory to do with 
  150. as they please.  In a multitasking environment, memory must be managed so that 
  151. more than one program can be loaded at a time and so that no single program is 
  152. given more memory than it needs.  DESQview provides this management in a way 
  153. that adapts to the type of memory hardware available on your PC.
  154.  
  155. If your PC has 640K of conventional memory, DESQview is able to multitask as 
  156. many programs as will fit in memory at the same time.  Additional programs can 
  157. be loaded but will cause the least recently used programs to be suspended and 
  158. swapped to disk to make room in memory for the new ones. 
  159.  
  160. If your PC is a 286-based system with extended memory only, DESQview can still 
  161. only multitask the programs that fit in 640K.  Additional programs open can be 
  162. swapped either to RAM disk, as well as to the user's local disk or network 
  163. disk.  DESQview is also capable of running 60K of itself in extended memory 
  164. thus reducing its DOS conventional memory overhead. If you have EMS 3.2 (Lotus-
  165. Intel-Microsoft Expanded Memory), DESQview will swap programs to expanded 
  166. memory instead of to disk.  This is so much faster than swapping to disk that 
  167. the swap time is almost not noticeable.
  168.  
  169. If your PC has EMS 4.0 or EEMS (AST-Quadram-Ashton Tate Enhanced Expanded 
  170. Memory) or a 386-based PC with an EMS 4.0 driver, DESQview can actually 
  171. multitask as many programs as will fit in conventional and expanded memory. 
  172. This can be as high as 32-megabytes worth of programs.  DESQview can also run 
  173. a large part of itself in expanded memory, giving a much larger maximum 
  174. program size.
  175.  
  176. Furthermore, DESQview can actually run both 286 or 386 DOS Extended programs 
  177. simultaneously with your other DOS programs. DOS Extended programs are 
  178. programs, such as Lotus 1-2-3 Release 3, IBM Interleaf, AutoCAD 386, Paradox 
  179. 386, which have been written to take advantage of either the 16-bit protected 
  180. mode of the 80286 processor or the 32-bit protected mode of the 80386 
  181. processor.  It is important to note that for DESQview to be able to run DOS 
  182. Extended programs, the DOS Extender must conform to the VCPI (Virtual Control 
  183. Program Interface) specification which specifies how protected mode programs 
  184. and 80386 control programs can work together.  With most DOS Extenders, you 
  185. also get the added benefit of virtual memory support automatically built into 
  186. the program a significant benefit if your users have limited memory.
  187.  
  188. CUSTOMIZATION
  189.  
  190. Although DESQview is best known for its ability to run off-the-shelf software 
  191. concurrently, DESQview is an ideal platform for developing customized vertical 
  192. market applications and workstations. 
  193.  
  194. DESQview's intertask communications and shared program and data capabilities, 
  195. coupled with its support of expanded memory, give developers efficient and 
  196. cost-effective techniques for developing large programs that can still run on 
  197. DOS and thus on the large installed base of DOS PCs.
  198.  
  199. In addition to providing multitasking and windowing services, DESQview can be 
  200. customized to provide the user interface appropriate to a particular 
  201. application.  This customization can take the form of restricting access to 
  202. certain DESQview menus, taking special action when certain menu items are 
  203. selected, or, in the extreme, disabling all access to DESQview menus and 
  204. providing the entire user interface as part of the application. 
  205.  
  206. In this latter case, the only part of DESQview that the user sees is a 
  207. copyright screen during start-up.  DESQview also includes a keystroke macro 
  208. capability enabling you to create built-in macros for each application running 
  209. as well as global macros which combine actions from several programs.
  210.  
  211.  
  212. PORTABILITY
  213.  
  214. DESQview with its entire API runs on 8088, 8086, 80286, 80386 and 80486i PCs 
  215. as well as the IBM Personal System/2s with monochrome, CGA, EGA, VGA or 
  216. Hercules display adapters.  Additionally, Wyse 700 and Micro Display System 
  217. Genius adapters are available from Quarterdeck.  This means that an 
  218. application that you write to be DESQview-specific can run on any PC from a 
  219. laptop dual-floppy PC to the very latest 486-based PC.  It can even run over a 
  220. network on a diskless PC.  Thus, the market for your DESQview-specific 
  221. application extends to the entire base of existing and future DOS PCs. 
  222.  
  223.  
  224. API DETAILS
  225.  
  226. In order for you to get a feel for the power built-in to each and every 
  227. DESQview, we've included a short description about each API command. 
  228.  
  229. The DESQview API is an object-oriented interface.  The data structures 
  230. DESQview uses to represent windows, mailboxes, etc. are called "objects". A 
  231. call to the API involves "sending a message" to an object, indicating which of 
  232. several operations you want performed on that data structure. This is referred 
  233. to as the "send interface."  Almost the entire API consists of sending one of 
  234. 25 messages to one of 7 different object types.
  235.  
  236. The DESQview API also has a non-object-oriented interface called the "direct 
  237. call interface."  This is the small subset of API functions that are not, by 
  238. nature, object-oriented, or that are convenient alternatives to the send 
  239. interface.
  240.  
  241. The DESQview API has a concise way of encoding a complete description of a 
  242. window so that a single call to the API can create the window, fill it with 
  243. the desired information, size and position it on the display, and define 
  244. fields that interact with the user.  All this is done using "Window Streams".
  245.  
  246. So that you can interrogate a window for its current contents, position, etc., 
  247. the DESQview 2 API also has "Query Streams."  In fact, any window parameter 
  248. that can be set by a Window Stream can be read by a Query Stream.
  249.  
  250. DESQview calls the portion of itself that interfaces with the user 
  251. the "Window Manager."  Every time a user presses the DESQ key (normally the 
  252. Alt key) and makes a menu selection, it is the Window Manager that opens, 
  253. switches, rearranges and closes windows, transfers data, displays help, or 
  254. quits DESQview.  In order for an application to have the same power as the 
  255. user, the DESQview API has "Manager Streams."  Manager Streams enable an 
  256. application to interact with the Window Manager. 
  257.  
  258. Using Manager Streams an application can, for example, ask the Window Manager 
  259. to make one of its windows the topmost window in the system, disallow any 
  260. resizing of the window by the user, and even notify the application if the 
  261. user tries to close the window.  Using Manager Streams an application can 
  262. disallow use of the DESQview menu and DESQview sub-menus.
  263.  
  264. But, there's still even more to the DESQview API.  DESQview provides a 
  265. comprehensive set of functions for simplifying the job of interfacing with the 
  266. user.  Instead of dealing with user input a single character at a time, your 
  267. application can present entire menus, dialogue boxes, or help screens to 
  268. DESQview and get back the resulting user input.  Common functions such as 
  269. cursor control, insertion and deletion of characters, tracking the mouse, and 
  270. selection from option lists are performed by DESQview.  DESQview performs 
  271. these functions under control of a data structure called the "Field Table." 
  272. Information about a window's size, position, contents and Field Table can be 
  273. combined together into "Panels."  Panels can be stored on disk or in memory 
  274. for later display.  Panels can be constructed manually or via the DESQview API 
  275. Panel Design Tool.
  276.  
  277.  
  278. DESQVIEW 2 API COMMANDS:
  279.  
  280. Send Interface Commands
  281.  
  282. WINDOW Objects
  283.  
  284. ADDTO     write characters & attributes to a window
  285. AT        position the logical cursor
  286. CONNECT   connect one window to another window
  287. EOF       return TRUE if cursor is past end window
  288. ERASE     clear a window
  289. FREE      close and free a window or a task
  290. HANDLE    return handle of current task's window
  291. LEN       return # characters/line in logical window
  292. NEW       create a new window or task
  293. OPEN      fill a window with a given character
  294. READ      read the next logical line from a window
  295. READN     read the next n characters/attributes
  296. REDRAW    redraw a window
  297. SIZEOF    return total # characters/logical window
  298. SUBFROM   write attributes to a window
  299. WRITE     write characters and/or command streams
  300.  
  301. KEYBOARD Objects
  302.  
  303. ADDTO     set individual keyboard control flags
  304. CLOSE     close a keyboard object
  305. ERASE     discard all input queued to keyboard
  306. FREE      free a keyboard object
  307. GETFLAGS  get keyboard control flags
  308. GETPRI    get objectq priority level of keyboard
  309. HANDLE    return handle of task's default keyboard
  310. NEW       create a new keyboard object
  311. OPEN      attach a keyboard to a window
  312. READ      get the next input from the keyboard
  313. SETESC    intercept keystrokes to input fields
  314. SETFLAGS  set/clear all keyboard control flags
  315. SETPRI    set objectq priority level of keyboard
  316. SIZEOF    return # of input buffers queued
  317. STATUS    get the scan code for the last key read
  318. SUBFROM   clear individual keyboard control flags
  319. WRITE     add input buffer to keyboard queue
  320.  
  321. MAILBOX Objects
  322.  
  323. ADDR      return sender of the last message READ
  324. ADDTO     send a message and status by value
  325. CLOSE     close a mailbox
  326. ERASE     discard all queued messages
  327. FREE      free a mailbox
  328. GETFLAGS  get mailbox control flags
  329. GETPRI    get objectq priority level of mailbox
  330. HANDLE    return handle of task's default mailbox
  331. LOCK      request exclusive access to a resource
  332. NEW       create a new mailbox
  333. OPEN      open a mailbox for input
  334. READ      get the next message from the queue
  335. SETFLAGS  set/clear all mailbox control flags
  336. SETNAME   assign a name to a mailbox
  337. SETPRI    set objectq priority level of mailbox
  338. SIZEOF    return the # of messages in the queue
  339. STATUS    return status of the last message READ
  340. SUBFROM   send a message & status by reference
  341. WRITE     send a message by value with status=0
  342.  
  343. OBJECTQ Objects
  344.  
  345. CLOSE     close an objectq
  346. ERASE     remove all objects from the queue
  347. HANDLE    return the handle of a task's objectq
  348. OPEN      open the objectq
  349. READ      wait for input from any open object
  350. SIZEOF    return the number of objects queued
  351. STATUS    return whether or not objectq is open
  352. SUBFROM   remove specific object from queue
  353. WRITE     add an object to the objectq
  354.  
  355. PANEL Objects
  356.  
  357. APPLY     display a particular panel
  358. CLOSE     close a panel object
  359. DIR       return a pointer to the panel directory
  360. FREE      free a panel object
  361. NEW       create a panel object
  362. OPEN      associate panel object with a panel file
  363. SIZEOF    return the # of panels in a panel file
  364. STATUS    verify success of an OPEN or APPLY
  365.  
  366. POINTER Objects
  367.  
  368. ADDTO     set pointer control flags
  369. CLOSE     stop taking pointer input
  370. ERASE     discard all pointer messages
  371. FREE      free a pointer object
  372. GETFLAGS  get pointer control flags
  373. GETPRI    get objectq priority level of pointer
  374. GETSCALE  return the current scaling factors
  375. NEW       create a new pointer object
  376. OPEN      start taking pointer input for window
  377. READ      wait for the next pointer message
  378. SETFLAGS  replace pointer control flags
  379. SETPRI    set objectq priority level of pointer
  380. SETSCALE  set the current scaling factors
  381. SIZEOF    return the number of messages queued
  382. STATUS    return the status of the last message
  383. SUBFROM   reset pointer control flags
  384. WRITE     move the pointer to a specified position
  385.  
  386. TIMER Objects
  387.  
  388. ADDTO     start a timer for a specified interval
  389. CLOSE     close a timer object
  390. ERASE     cancel the current timer interval
  391. FREE      free a timer object
  392. GETPRI    get objectq priority level of timer
  393. LEN       return time remaining before expiration
  394. NEW       create a new timer object
  395. OPEN      open a timer object
  396. READ      wait for the current timer to expire
  397. SETPRI    set objectq priority level of timer
  398. SIZEOF    return elapsed time since timer started
  399. STATUS    return the status of the timer object
  400. WRITE     start a timer to end at a specified time
  401.  
  402. Direct Call Interface Commands
  403.  
  404. APILEVEL  define minimum API level required
  405. APPNUM    get the current application's number
  406. ASSERTMAP get current mapping context & set new
  407. BEGINC    begin critical region
  408. CSTYLE    use C language style control codes
  409. DBGPOKE   poke debug information onto display
  410. DISPEROR  display an error message window
  411. DVPRESENT determine if DESQview is present
  412. ENDC      end critical region
  413. FINDMAIL  find a mailbox by name
  414. FREEBIT   undefine second-level interrupt handler
  415. GETBIT    define a second-level interrupt handler
  416. GETBUF    get address of a Logical Window Buffer
  417. GETCRIT   get critical region nesting level
  418. GETERROR  get error handling level of current task
  419. GETMEM    allocate buffer from System Memory
  420. ISOBJ     determine if a handle is valid
  421. JUSTIFY   turn off/on automatic justification
  422. KMOUSE    control the keyboard mouse
  423. LOCATE    find window at given screen location
  424. NEWPROC   start a new process
  425. OBJTYPE   determine object type of a given handle
  426. OSTACK    switch to task's internal stack
  427. PAUSE     relinquish control to other tasks
  428. PGMINT    interrupt another task
  429. POSTTASK  awaken task by posting its Objectq
  430. POSWIN    position a window on the display
  431. PRINTC    display a character in a window
  432. PUSHKEY   push key into keyboard input stream
  433. PUTMEM    free a buffer allocated by GETMEM
  434. SETBIT    schedule a second-level interrupt handler
  435. SETERROR  set error handling level of current task
  436. SHADOW    get window buffer and start shadowing
  437. SOUND     make a sound
  438. START     start a task that was previously stopped
  439. STOP      stop a task until START is called
  440. UPDATE    update a portion of a window
  441. USTACK    switch off task's internal stack
  442.  
  443.  
  444. Window Stream & Query Stream Commands
  445.  
  446. 00 to 9F  print strings (attrib,char,blanks) to window
  447.  
  448. A0 to CF  change size/ position of a window
  449.  
  450. D0 to DF  set options for appearance of window:  frames,color,
  451.           show/hide window, display of control characters
  452.  
  453. E0 to EF  perform immediate actions:  clearing,scrolling recoloring,
  454.           redrawing window; create new windows & repeat command sequences
  455.  
  456. F0 to FF  define, read, write fields within window.
  457.  
  458.  
  459. Manager Streams
  460.  
  461. 00 to 3F  Allows specific DESQview commands:
  462.           move & resize window, scroll data, hide
  463.           rearrange program, suspend application, 
  464.           display DESQview menu
  465.  
  466. 40 to 71  notify application on specific DV commands.
  467.  
  468. 84 to 8B  specify environment of window:  suspend
  469.           application when it is in background, set
  470.           application's asynchronous notification.
  471.  
  472. AE to BF  enable/disable DESQview extensions.
  473.  
  474. C0 to FF  reorder, hide, unhide, suspend resume
  475.           applications.
  476.  
  477.  
  478. C, Pascal, BASIC, Clipper & dBASE
  479. Listed below are API Interfaces available with each DESQview API library.
  480.  
  481.  
  482. C - C 
  483. P - Pascal
  484. B - Basic
  485. R - Clipper
  486. D - dBase
  487.  
  488.       General Functions
  489. CPBRD
  490. -----
  491. YYYYY api_beginc       begin critical region 
  492. YYYYY api_cancel       cancel current Window Mgr operation 
  493. YYYY  api_commonmem    get status of Common Memory 
  494. YYYY  api_convenmem    get status of Conventional Memory 
  495.    Y  api_curdrive     get the current default drive 
  496.    Y  api_dec          convert hex string to unsigned decimal # 
  497. YY Y  api_dvpresent    determine if DESQview is present 
  498. YYYYY api_endc         end critical region
  499. YYYY  api_enterc       begin critical region w/o waiting for DOS 
  500. YYYYY api_exit         exit API interface 
  501. YYYY  api_expandmem    get status of Expanded Memory 
  502. YY Y  api_freebit      disconnect 2nd level interrupt handler 
  503. YY Y  api_getbit       define 2nd level interrupt handler 
  504. YYYYY api_getcommon    get Common Memory buffer 
  505. YYYYY api_getcrit      get critical region nesting level 
  506. YYYYY api_getmem       get System Memory buffer 
  507.    Y  api_hex          convert decimal # to hexadecimal string 
  508.    Y  api_hexaddr      convert addr to string in seg:off hex form 
  509. YYYYY api_init         initialize API interface & return version of DESQview 
  510.   Y   api_interactive  determine if in BASIC interactive environment 
  511. YYYYY api_isobj        determine if a given handle is valid 
  512.    Y  api_isset        determine if given bit is set within a specified byte 
  513. YYYYY api_justify      enable/disable automatic justification of task window 
  514. YYYYY api_kmouse       turn keyboard mouse on and off 
  515. YYYYY api_level        define API revision level that application requires 
  516. YYYYY api_objtype      determine object type of a given handle 
  517. YYYYY api_pause        give other tasks a chance to run 
  518. YYYYY api_poke         display debug info on bottom line of screen 
  519. YYYY  api_processmem   get status of app's Process Memory 
  520. YYYYY api_pushkey      push key into input stream 
  521. YYYY  api_putcommon    return Common Memory buffer 
  522. YYYY  api_putkey       put key into an application's input stream 
  523. YYYY  api_putmem       return System Memory buffer 
  524.    Y  api_read         read from DV-owned memory buffer 
  525. YY Y  api_setbit       schedule a 2nd level interrupt handler 
  526. YY Y  api_shadow       get task's logical window buffer & start shadowing 
  527. YYYYY api_sound        make a sound 
  528. YY Y  api_update       redraw portion of a task's logical window 
  529.    Y  api_write        write to DESQview-owned memory buffer
  530.  
  531.  
  532.       Application Management Functions
  533. CPBRD
  534. -----
  535. YYYYY app_foreonly     indicate whether app can run in background 
  536. YYYYY app_free         free an application and its window 
  537. YYYYY app_goback       force an application into background 
  538. YYYYY app_gofore       force an application into foreground 
  539. YYYYY app_hide         hide all windows of an application 
  540. YYYY  app_new          start a new app in the current process 
  541. YYYYY app_number       get the current app's Switch number  
  542.    Y  app_run          execute DOS command in new process 
  543. YYYYY app_show         display all windows of an application 
  544. YYYYY app_start        start a new application in a new process 
  545. YYYYY app_suspend      suspend and hide all tasks in an app
  546.       
  547.       
  548.       Field Management Functions 
  549. CPBRD
  550. -----
  551. YYYYY fld_altmode      set Alternate Field Processing mode 
  552.    Y  fld_atget        input data at specified field position 
  553.    Y  fld_atprompt     paint menu prompts & define msg at fld
  554.    Y  fld_atsay        display data at specified field 
  555. YYYYY fld_attr         fill a field with a given attribute 
  556. YYYYY fld_char         fill a field with a given character 
  557. YYYYY fld_clear        clear a field 
  558. YYYYY fld_cursor       move cursor to a field 
  559. YYYYY fld_entry        change field table entry 
  560. YYYYY fld_header       change field table header 
  561.  YYY  fld_lentry       load field table entry of field table window stream 
  562.  YYY  fld_lheader      load field table header of field table window stream 
  563. YYYYY fld_marker       define selected-field marker character 
  564. YYYYY fld_point        move pointer to a given position in a field 
  565. YYYYY fld_protattr     set Protected Attrib field processing mode  
  566. YYYYY fld_reset        reset selected and modified bits 
  567. YYYYY fld_scroll       scroll a field 
  568.  YYY  fld_stream       allocate string space for field table window stream 
  569. YYYYY fld_type         change the type of a field 
  570. YYYYY fld_write        write a string into a field
  571.       
  572.      
  573.       Keyboard Management Functions 
  574. CPBRD
  575. -----
  576.    Y  key_accept       enter a string into a memory variable 
  577. YYYYY key_addto        set keyboard control flags 
  578.    Y  key_clear        empty keyboard type ahead buffer 
  579.    Y  key_clkey        convert DV key code to Clipper key code 
  580. YYYYY key_close        disconnect keyboard from its window 
  581.    Y  key_dvkey        convert Clipper key code to DV key code 
  582. YYYYY key_erase        discard pending keyboard input 
  583. YYYYY key_free         free a keyboard object 
  584. YYYYY key_getc         wait for next key (keystroke mode) 
  585. YYYYY key_getflags     get keyboard control flags 
  586. YYYYY key_getpri       get priority level of keyboard in objectq 
  587.   YY  key_inkey        read a character from keyboard 
  588.    Y  key_input        enter an expression into a memory variable 
  589.    Y  key_keyboard     stuff keyboard buffer with a string 
  590.    Y  key_lastkey      determine last key fetched from keybd 
  591. YYYYY key_me           get current task's keyboard handle 
  592.    Y  key_nextkey      read the next key from keyboard 
  593. YYYYY key_new          create a new keyboard object 
  594. YYYYY key_of           get handle of a given task's keyboard 
  595. YYYYY key_open         attach keyboard to a given window 
  596. YYYY  key_owner        get owner of a given keyboard 
  597. YYYYY key_read         read input from keyboard 
  598.    Y  key_readinsert   return the current insert mode setting 
  599.    Y  key_readlast     read DV key code in key_lastkey buffer 
  600.    Y  key_setcursor    determine if hardware cursor displayed 
  601. YYYY  key_setesc       define function to filter keys in fld mode 
  602. YYYYY key_setflags     replace keyboard control flags 
  603. YYYYY key_setpri       set priority level of kbd in task's objectq 
  604. YYYYY key_sizeof       get # keyboard messages pending 
  605. YYYYY key_status       get status of last keyboard message 
  606. YYYYY key_subfrom      clear keyboard control flags 
  607.    Y  key_wait         suspend task until a key is pressed 
  608. YYYYY key_write        write string to keyboard 
  609.    Y  key_writelast    write DV key code into 
  610.       
  611.      
  612.       Mailbox Management Functions
  613. CPBRD
  614. -----
  615. YYYYY mal_addr         return sender of last message 
  616. YYYYY mal_addto        send a message by value with given status 
  617. YYYYY mal_close        close a mailbox 
  618. YYYYY mal_erase        erase all pending messages 
  619. YYYYY mal_find         find a mailbox by name 
  620. YYYYY mal_free         free a mailbox object 
  621. YYYY  mal_getflags     get mailbox control flags 
  622. YYYY  mal_getpri       get priority level of mailbox in objectq 
  623. YYYYY mal_lock         lock access to a resource 
  624. YYYYY mal_me           get handle of current task's mailbox 
  625. YYYYY mal_name         assign a global name to a mailbox 
  626. YYYYY mal_new          create a new mailbox 
  627. YYYYY mal_of           get handle of a given task's mailbox 
  628. YYYYY mal_open         open a mailbox 
  629. YYYY  mal_ownerget     owner of a given mailbox 
  630. YYYYY mal_read         wait for next message 
  631. YYYY  mal_setflags     replace mailbox control flags 
  632. YYYY  mal_setpriset    priority level of mailbox in task's objectq 
  633. YYYYY mal_sizeof       get # messages pending 
  634. YYYYY mal_status       get status of last message received 
  635. YYYY  mal_subfrom      send msg by reference w given status 
  636. YYYYY mal_unlock       unlock access to a resource 
  637. YYYYY mal_write        send a message by value with status zero
  638.       
  639.       
  640.       Objectq Management Functions
  641. CPBRD
  642. -----
  643. YYYYY obq_close        close the task's objectq 
  644. YYYYY obq_erase        erase contents of the task's objectq 
  645. YYYYY obq_open         open the task's objectq 
  646. YYYYY obq_read         wait for any object to have input 
  647. YYYYY obq_sizeof       get # of objectq entries pending 
  648. YYYYY obq_status       determine if the task's objectq is open 
  649. YYYYY obq_subfrom      remove copies of object handle from task's objectq 
  650. YYYYY obq_write        add an object handle to task's objectq
  651.       
  652.       
  653.       Panel Management Functions 
  654. CPBRD
  655. -----
  656. YYYYY pan_apply        display a named panel & prepare for input 
  657. YYYYY pan_close        close a panel file 
  658. YYYY  pan_dir          get list of panels in the panel file 
  659. YYYYY pan_free         free a panel object 
  660. YYYYY pan_new          create a panel object 
  661. YYYYY pan_open         open a panel file 
  662. YYYY  pan_owner        get owner of a given panel 
  663. YYYY  pan_sizeof       get # panels in the panel file 
  664. YYYYY pan_status       get status of last pan_open or pan_apply
  665.       
  666.       
  667.       Pointer Management Functions
  668. CPBRD
  669. -----
  670. YYYYY ptr_addto        set pointer control flags 
  671. YYYYY ptr_close        close a pointer object 
  672. YYYYY ptr_erase        erase pending pointer messages 
  673. YYYYY ptr_free         free a pointer object 
  674. YYYYY ptr_getflags     get pointer control flags 
  675. YYYYY ptr_getpri       get priority level of pointer in objectq 
  676. YYYYY ptr_getscale     get current scaling factors 
  677. YYYYY ptr_new          create a new pointer object 
  678. YYYYY ptr_open         open pointer and assign to a window 
  679. YYYY  ptr_owner        get owner of a given pointer 
  680. YYYYY ptr_read         wait for next pointer message 
  681. YYYYY ptr_setflags     replace pointer control flags 
  682. YYYYY ptr_setpri       set priority level of ptr in task's objectq 
  683. YYYYY ptr_setscale     set current scaling factors 
  684. YYYYY ptr_sizeof       get # messages pending 
  685. YYYYY ptr_status       get button status from last message received 
  686. YYYYY ptr_subfrom      clear pointer control flags 
  687. YYYYY ptr_write        move the pointer to a given position
  688.       
  689.       
  690.       Query Functions
  691. CPBRD
  692. -----
  693. YYYYY qry_atread       TRUE if win_read and win_readn will read attributes 
  694. YYYYY qry_attrget      current output attribute 
  695. YY Y  qry_col          get current cursor column position 
  696. YYYYY qry_color        get physical attribute for given logical attribute
  697. YYYYY qry_ctrl         TRUE if processing control codes 
  698. YYYYY qry_cursor       get current cursor position 
  699. YYYY  qry_dosuser      get handle of task currently using DOS 
  700. YYYYY qry_entry        get field table entry 
  701. YYYYY qry_field        get contents of a field 
  702. YYYY  qry_flength      get length of a field 
  703. YYYYY qry_frame        TRUE if the window has a frame 
  704. YYYYY qry_frattr       get current frame attribute 
  705.    Y  qry_ftable       get field table window stream 
  706. YYYYY qry_header       get field table header 
  707. YYYYY qry_hidden       TRUE if the window is hidden 
  708. YYYYY qry_kmouse       TRUE if using a keyboard mouse 
  709. YYYYY qry_leave        TRUE if leaving attributes untouched when writing to     
  710.                        window
  711. YYYYY qry_logattr      TRUE if using logical attributes 
  712. YYYYY qry_lsize        get size of logical window buffer 
  713. YYYYY qry_origin       get origin of physical relative to logical window 
  714. YYYYY qry_position     get position of physical window 
  715. YY Y  qry_row          get current cursor row position 
  716. YYYY  qry_scrninfo     get current size & video mode of screen 
  717. YYYYY qry_size         get size of physical window 
  718. YYYYY qry_title        get window's title 
  719. YYYYY qry_type         get type of field
  720.       
  721.       
  722.       Text File Device Driver Functions
  723. CPBRD
  724. -----
  725.  Y    tfd_attach       attach a given window to TFDD 
  726.  Y    tfd_close        close TFDD 
  727.  Y    tfd_lock         lock access to TFDD 
  728.  Y    tfd_open         open TFDD and attach given window 
  729.  Y    tfd_unlock       unlock access to TFDD
  730.       
  731.       
  732.       Timer Management Functions
  733. CPBRD
  734. -----
  735. YYYYY tim_addto        start a timer for a given interval 
  736. YYYYY tim_close        close a timer object 
  737. YYYYY tim_erase        stop a running timer 
  738. YYYYY tim_freefree     a timer object 
  739. YYYYY tim_getpriget    priority level of timer in objectq 
  740. YYYYY tim_len          get time remaining until timer expires 
  741. YYYYY tim_newcreate    a new timer object 
  742. YYYYY tim_openopen     a timer object 
  743. YYYY  tim_owner        get owner of a given timer 
  744. YYYYY tim_read         wait for timer to expire 
  745. YYYYY tim_setpri       set priority level of timer in task's objectq 
  746. YYYYY tim_sizeofget    time since a timer started running 
  747. YYYYY tim_status       determine if a timer is running 
  748. YYYYY tim_write        start a timer for a given time of day
  749.       
  750.       
  751.       Task Management Functions
  752. CPBRD
  753. -----
  754. YY Y  tsk_dispatchint  software interrupt another task at a "safer" time 
  755. YYYYY tsk_free         free a task and its window 
  756. YYYYY tsk_geterrorget  error handling level of current task 
  757. YYYY  tsk_me           get handle of current task 
  758. YY Y  tsk_new          create a new task 
  759. YY Y  tsk_pgmint       software interrupt another task 
  760. YYYY  tsk_owner        get owner of a given task 
  761. YYYYY tsk_post         restart a task waiting on its objectq 
  762. YYYYY tsk_seterror     set error handling level of current task 
  763. YYYYY tsk_start        restart a stopped task 
  764. YYYYY tsk_stop         temporarily stop a task
  765.       
  766.      
  767.       Window Management Functions 
  768. CPBRD
  769. -----
  770.    Y  win_achoice      execute a pop-up menu in a window 
  771. YYYYY win_addto        write characters & attributes to a window 
  772. YYYYY win_adopt        adopt a window 
  773. YYYYY win_allow        specify which DV commands are allowed 
  774. YY Y  win_async        define asynchronous notify function 
  775.    Y  win_atbox        draw a box in a window 
  776.    Y  win_atclear      clear rectangular region of window 
  777.    Y  win_atget        input data at specified window position 
  778.    Y  win_atprompt     paint menu prompts & define messages of window
  779. YYYYY win_atread       set read mode to read either character or attribute 
  780.    Y  win_atsay        display data at specified window position 
  781. YYYY  win_attach       attach/detach window to parent task window 
  782.    Y  win_atto         draw single or double line box in window 
  783. YYYYY win_attr         set current output attribute 
  784. YYYYY win_blanks       write blanks to a window 
  785. YYYYY win_bottom       make window bottommost in its application
  786.    Y  win_browse       browse & edit records within a window 
  787. YYYY  win_buffer       get address of logical window buffer
  788. YYYYY win_cancel       cancel notification on a given event 
  789.    Y  win_clear        clear a window and home the cursor 
  790.    Y  win_clcolor      convert DESQview physical attribute to Clipper color     
  791.                        code 
  792.    Y  win_cleargets    release all of window's pending gets 
  793.    Y  win_clscroll     scroll window region up, down or blank out 
  794. YYYYY win_color        change logical attribute mapping 
  795. YYYY  win_connect      attach window to another window 
  796. YYYYY win_ctrl         enable/disable interpretation of control characters 
  797. YYYYY win_cursor       move window's logical cursor 
  798.    Y  win_dbedit       browse records in a table layout 
  799. YYYYY win_dflt         change default notify window 
  800. YYYYY win_disallow     specify which DV commands are not allowed 
  801. YYYYY win_disperor     display an error message window 
  802.    Y  win_dvattr       convert Clipper color code to DESQview physical          
  803.                        attribute 
  804. YYYYY win_eof          TRUE if logical cursor is beyond end of window 
  805. YYYYY win_erase        clear a window 
  806. YYYYY win_frame        enable/disable display of a window's frame 
  807. YYYYY win_frattr       define window frame attribute 
  808. YYYYY win_free         remove a window from screen and free its handle 
  809. YYYYY win_hcur         display hardware cursor at logical cursor position
  810. YYYYY win_hide         mark a window as hidden 
  811. YYYYY win_leave        leave existing attribute when writing to window 
  812. YYYYY win_len          return width of logical window 
  813. YYYYY win_locate       return which window is visible at given screen           
  814.                        position 
  815. YYYYY win_logattr      use logical/physical attributes 
  816. YYYYY win_lsize        set window's logical dimensions 
  817.    Y  win_mark1/2      display result of an expression in specified window 
  818. YYYYY win_maxsize      set window's max physical dimensions 
  819. YYYYY win_me           get current task's window handle 
  820.    Y  win_menuto       execute light-bar menu for defined prompts in a window
  821. YYYYY win_minsize      set window's min physical dimensions 
  822. YYYYY win_move         move physical window 
  823. YYYYY win_new          create a new window 
  824. YYYYY win_notify       enable notification on a given event 
  825. YYYYY win_nread        read n characters from a window 
  826. YYYYY win_open         fill a window with a given character 
  827. YYYYY win_origin       define portion of logical window viewed in physical      
  828.                        window
  829. YYYYY win_orphan       orphan a window 
  830. YYYY  win_owner        get owner of a given window 
  831. YYYYY win_paste        define window as current clipboard window 
  832. YYYYY win_point        jump mouse to logical cursor position 
  833. YYYYY win_poswin       position window relative to another window 
  834. YYYYY win_putc         write a character/attribute pair to a window 
  835. YYYYY win_printf       write formatted data to a window 
  836. YYYYY win_read         read rest of current line from window 
  837.    Y  win_readexit     determine whether Up/Down keys exit 
  838.    Y  win_readgets     enter editing mode using pending gets in a window 
  839. YYYYY win_redraw       redraw a window 
  840. YYYY  win_reorder      reorder an application's windows 
  841. YYYYY win_repattr      write an attribute to a window n times 
  842. YYYYY win_repchar      write a character to a window n times 
  843. YYYYY win_resize       set physical dimensions of a window 
  844.    Y  win_restore      display a saved window to a specified window area 
  845.    Y  win_save         save window region to memory variable 
  846. YYYYY win_scroll       scroll all or part of a window 
  847.    Y  win_setbell      determine sounding of bell during win_readgets 
  848.    Y  win_setcenter    determine centering of win_atprompt messages 
  849.    Y  win_setcolor     determine color attributes of window 
  850.    Y  win_setconfirm   determine required win_atget termination with Enter      
  851.                        key 
  852.    Y  win_setescape    determine whether Esc key terminates win_readgets 
  853.    Y  win_setintensity toggle display intensity of win_atget and win_atprompt
  854.    Y  win_setmessage   determine row and centering of win_atprompt messages
  855.    Y  win_setwrap      determine wrapping in win_menuto 
  856. YYYYY win_sizeof       get # character positions in the logical window 
  857. YYYYY win_stream       write a stream to a window 
  858. YYYYY win_subfrom      write attributes to a window 
  859. YYYYY win_title        change a window's title 
  860. YYYYY win_top          make window topmost in its application 
  861. YYYYY win_topsys       make window topmost in the system 
  862. YYYYY win_unhide       mark a window as not hidden 
  863.    Y  win_updated      determine if pending gets changed during last            
  864.                        win_readgets 
  865. YYYYY win_write        write characters to a window
  866.  
  867.  
  868.             YES! I'm Interested In System Development/Performance
  869. ************************************************************************** 
  870. *QTY*5-1/4*3-1/2* Product                                * Price * Total * 
  871. ************************************************************************** 
  872. *   *     *     * DESQview                               *$129.95*$      * 
  873. ************************************************************************** 
  874. *   *     *     * DESQview386 (DESQview & QEMM)          *$219.95*$      * 
  875. ************************************************************************** 
  876. *   *     *     * Quarterdeck Manifest                   *$ 59.95*$      * 
  877. ************************************************************************** 
  878. *   *     *     * QRAM                                   *$ 79.95*$      * 
  879. ************************************************************************** 
  880. *   *     *     * QEMM 50/60                             *$ 99.95*$      * 
  881. ************************************************************************** 
  882. *   *     *     * QEMM 386                               *$ 99.95*$      * 
  883. ************************************************************************** 
  884. *   *     *     * DESQview API Debugger                  *$ 50.00*$      *
  885. ************************************************************************** 
  886. *   *     *     * DESQview API Panel Design Tool         *$ 50.00*$      *
  887. ************************************************************************** 
  888. *   *     *     * DESQview API Reference                 *$ 25.00*$      *
  889. ************************************************************************** 
  890. *   *     *     * DESQview API Libraries (C,Pascal,      *       *$      * 
  891. *   *     *     *          Basic,Clipper and dBase)      *$ 50.00*       *
  892. *   *     *     *                                        *       *       * 
  893. *   *     *     * Check One:                             *       *       * 
  894. *   *     *     * C( )  Clipper( ) Pascal( ) dBase( )    *       *       * 
  895. *   *     *     * Basic( )                               *       *       * 
  896. ************************************************************************** 
  897. *   *     *     * DESQview API Toolkit (API Reference,   *$100.00*$      *
  898. *   *     *     *            Library,Panel Design Tool,  *       *       * 
  899. *   *     *     *            Debugger, DESQview)         *       *       * 
  900. *   *     *     *                                        *       *       * 
  901. *   *     *     * Check One:                             *       *       * 
  902. *   *     *     * C( )  Clipper( ) Pascal( ) dBase( )    *       *       * 
  903. *   *     *     * Basic( )                               *       *       * 
  904. ************************************************************************** 
  905. *   *     *     * DESQview by S.R. Davis (book)          *$ 29.95*$      * 
  906. **************************************************************************
  907. ***************** Shipping & Handling                    *********       *
  908. ***************** USA: $5                                *********       *
  909. ***************** Outside USA: $10                       *********$      *
  910. **************************************************************************
  911. ***************** Sales Tax (CA Only @ %8.25)            *********$      *
  912. **************************************************************************
  913. ***************** Amount                                 *$              *
  914. **************************************************************************
  915.                                                           
  916.                                                           
  917. **************************************************************************
  918. * Payment:  M/C VISA AMEX Discover                                       *
  919. **************************************************************************
  920. * Expiration:                                                            *
  921. **************************************************************************
  922. * Card Number:                                                           *
  923. **************************************************************************
  924. * Name on credit card:                                                   *  
  925. **************************************************************************
  926. * Shipping Address:                                                      *
  927. *                                                                        *
  928. *                                                                        *
  929. ************************************************************************** 
  930. * Telephone:                                                             *
  931. **************************************************************************
  932. * Signature:                                                             *
  933. **************************************************************************
  934.                                                                           
  935.  
  936.                          Quarterdeck Office Systems
  937.                    150 Pico Blvd., Santa Monica, CA 90405
  938.                                (310) 314-3222
  939.                              Fax (310) 314-3217
  940.  
  941.   ************************************************************************
  942.   *This technical note may be copied and distributed freely as long as it*
  943.   *is distributed in its entirety and it is not distributed for profit.  *
  944.   *         Copyright (C) 1990-2 by Quarterdeck Office Systems           *
  945.   ************************ E N D   O F   F I L E *************************
  946.